In Elixir, abbandoniamo il modello imperativo di modifica dello stato a favore di un approccio basato su flussi, dove i programmi sono trasformazioni discrete, trasformazioni pure. Invece di dire al computer come cambiare un valore, definiamo una pipeline di funzioni in cui Il programma dovrebbe consistere nella trasformazione dei dati.
1. Il Dovere dell'Immutabilità
In Elixir, tutti i valori sono immutabili. Una volta creati, i dati non possono essere modificati. Questo garantisce che I dati immutabili sono dati noti—l'informazione non cambierà mai in modo imprevisto, eliminando categorie massicce di bug legati allo stato. Questa trasformazione non modifica mai i dati; invece, ogni funzione crea una nuova, fresca versione della struttura dati.
2. Il Filosofia del Pipe
L'operatore pipe (|>) tratta i dati come un fluido che scorre lungo una linea di produzione. Un linguaggio di programmazione funzionale ci permette di pensare in termini di funzioni che trasformano i dati passo dopo passo.
3. Il Contesto degli Attori
Nel VM di Erlang (BEAM), il codice viene eseguito in piccoli processi concorrenti, ognuno con il proprio stato. I processi si comunicano tra loro tramite messaggi. Poiché la comunicazione avviene tramite passaggio di messaggi, lo scambio di dati tra macchine diverse in una rete è gestito in modo trasparente dal VM.